﻿using System;
namespace Producers.Rr.Xtee.Riik.Ee.Producer.Rr {
    
    
    public partial class RRExtDocumentDataResponse : global::Producers.Rr.Xtee.Riik.Ee.Producer.Rr.IRRExtDocumentDataResponse {
        
        private RRExtDocumentDataResponse.IIsikudType @__isikud;
        
        public RRExtDocumentDataResponse() {
        }
        
        /// <summary>
        /// All parameters
        /// </summary>
        public RRExtDocumentDataResponse(RRExtDocumentDataResponse.IIsikudType @isikud) {
            this.@__isikud = @isikud;
        }
        
        /// <summary>
        /// Copy Constructor
        /// </summary>
        protected RRExtDocumentDataResponse(IRRExtDocumentDataResponse @rRExtDocumentDataResponse) {
            this.@__isikud = @rRExtDocumentDataResponse.Isikud;
        }
        
        public virtual RRExtDocumentDataResponse.IIsikudType Isikud {
            get {
                return this.@__isikud;
            }
            set {
                this.@__isikud = value;
            }
        }
        
        public partial class IsikudType : IIsikudType {
            
            private RRExtDocumentDataResponse.IsikudType.IIsikType @__isik;
            
            public IsikudType() {
            }
            
            /// <summary>
            /// All parameters
            /// </summary>
            public IsikudType(RRExtDocumentDataResponse.IsikudType.IIsikType @isik) {
                this.@__isik = @isik;
            }
            
            /// <summary>
            /// Copy Constructor
            /// </summary>
            protected IsikudType(IIsikudType @isikudType) {
                this.@__isik = @isikudType.Isik;
            }
            
            public virtual RRExtDocumentDataResponse.IsikudType.IIsikType Isik {
                get {
                    return this.@__isik;
                }
                set {
                    this.@__isik = value;
                }
            }
            
            public partial class IsikType : IIsikType {
                
                private string @__isikukood;
                
                private string @__eesnimi;
                
                private string @__perenimi;
                
                private RRExtDocumentDataResponse.IsikudType.IsikType.IVeadType @__vead;
                
                public IsikType() {
                }
                
                /// <summary>
                /// All parameters
                /// </summary>
                public IsikType(string @isikukood, string @eesnimi, string @perenimi, RRExtDocumentDataResponse.IsikudType.IsikType.IVeadType @vead) {
                    this.@__isikukood = @isikukood;
                    this.@__eesnimi = @eesnimi;
                    this.@__perenimi = @perenimi;
                    this.@__vead = @vead;
                }
                
                /// <summary>
                /// Copy Constructor
                /// </summary>
                protected IsikType(IIsikType @isikType) {
                    this.@__isikukood = @isikType.Isikukood;
                    this.@__eesnimi = @isikType.Eesnimi;
                    this.@__perenimi = @isikType.Perenimi;
                    this.@__vead = @isikType.Vead;
                }
                
                public virtual string Isikukood {
                    get {
                        return this.@__isikukood;
                    }
                    set {
                        this.@__isikukood = value;
                    }
                }
                
                public virtual string Eesnimi {
                    get {
                        return this.@__eesnimi;
                    }
                    set {
                        this.@__eesnimi = value;
                    }
                }
                
                public virtual string Perenimi {
                    get {
                        return this.@__perenimi;
                    }
                    set {
                        this.@__perenimi = value;
                    }
                }
                
                public virtual RRExtDocumentDataResponse.IsikudType.IsikType.IVeadType Vead {
                    get {
                        return this.@__vead;
                    }
                    set {
                        this.@__vead = value;
                    }
                }
                
                public partial class VeadType : IVeadType {
                    
                    private RRExtDocumentDataResponse.IsikudType.IsikType.VeadType.IVigaType @__viga;
                    
                    public VeadType() {
                    }
                    
                    /// <summary>
                    /// All parameters
                    /// </summary>
                    public VeadType(RRExtDocumentDataResponse.IsikudType.IsikType.VeadType.IVigaType @viga) {
                        this.@__viga = @viga;
                    }
                    
                    /// <summary>
                    /// Copy Constructor
                    /// </summary>
                    protected VeadType(IVeadType @veadType) {
                        this.@__viga = @veadType.Viga;
                    }
                    
                    public virtual RRExtDocumentDataResponse.IsikudType.IsikType.VeadType.IVigaType Viga {
                        get {
                            return this.@__viga;
                        }
                        set {
                            this.@__viga = value;
                        }
                    }
                    
                    public partial class VigaType : IVigaType {
                        
                        private string @__kood;
                        
                        private string @__tekst;
                        
                        public VigaType() {
                        }
                        
                        /// <summary>
                        /// All parameters
                        /// </summary>
                        public VigaType(string @kood, string @tekst) {
                            this.@__kood = @kood;
                            this.@__tekst = @tekst;
                        }
                        
                        /// <summary>
                        /// Copy Constructor
                        /// </summary>
                        protected VigaType(IVigaType @vigaType) {
                            this.@__kood = @vigaType.Kood;
                            this.@__tekst = @vigaType.Tekst;
                        }
                        
                        public virtual string Kood {
                            get {
                                return this.@__kood;
                            }
                            set {
                                this.@__kood = value;
                            }
                        }
                        
                        public virtual string Tekst {
                            get {
                                return this.@__tekst;
                            }
                            set {
                                this.@__tekst = value;
                            }
                        }
                    }
                    
                    public interface IVigaType {
                        
                        string Kood {
                            get;
                            set;
                        }
                        
                        string Tekst {
                            get;
                            set;
                        }
                    }
                }
                
                public interface IVeadType {
                    
                    RRExtDocumentDataResponse.IsikudType.IsikType.VeadType.IVigaType Viga {
                        get;
                        set;
                    }
                }
            }
            
            public interface IIsikType {
                
                string Isikukood {
                    get;
                    set;
                }
                
                string Eesnimi {
                    get;
                    set;
                }
                
                string Perenimi {
                    get;
                    set;
                }
                
                RRExtDocumentDataResponse.IsikudType.IsikType.IVeadType Vead {
                    get;
                    set;
                }
            }
        }
        
        public interface IIsikudType {
            
            RRExtDocumentDataResponse.IsikudType.IIsikType Isik {
                get;
                set;
            }
        }
    }
}
